import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path' // 用于配置别名
import AutoImport from 'unplugin-auto-import/vite' // 自动加载组件之一，如果使用 Webpack，需要把 vite 改成 webpack
import Components from 'unplugin-vue-components/vite' // 自动加载组件之二，如果使用 Webpack，需要把 vite 改成 webpack
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' // 自动按需导入 ElementPlus 的组件

export default defineConfig({ // 详细配置选项见：https://vitejs.dev/config/
  server: { // 服务器配置
    port: 10110, // 端口
  },
  resolve: {
    alias: { // 别名配置，这些配了也不一定好用，有时候 IDE 不认，会有错误提示，看着难受
      '@': resolve(__dirname, './src'), // @ 指代 src 目录
      'api': resolve(__dirname, './src/api'), // api 指代 src/api 目录
      'asserts': resolve(__dirname, './src/asserts'), // asserts 指代 src/asserts 目录
      'components': resolve(__dirname, './src/components'), // components 指代 src/components 目录
      'config': resolve(__dirname, './src/config'), // config 指代 src/config 目录
      'lang': resolve(__dirname, './src/lang'), // lang 指代 src/lang 目录
      'layout': resolve(__dirname, './src/layout'), // layout 指代 src/layout 目录
      'router': resolve(__dirname, './src/router'), // router 指代 src/router 目录
      'store': resolve(__dirname, './src/store'), // store 指代 src/store 目录
      'style': resolve(__dirname, './src/style'), // style 指代 src/style 目录
      'util': resolve(__dirname, './src/util'), // util 指代 src/util 目录
      'view': resolve(__dirname, './src/view'), // view 指代 src/view 目录
    }
  },
  plugins: [ // 引入插件
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()], // 自动按需导入 ElementPlus 组件，从而缩减启动时间
    }),
    Components({
      resolvers: [ElementPlusResolver()], // 自动按需导入 ElementPlus 组件，从而缩减启动时间
    }),
  ],
  css: {
    preprocessorOptions: { // 引入 CSS 预处理器
      scss: { // 使用 SCSS 的部分
        additionalData: `@use "~/style/Q3D_S_Config.scss" as q3d_s_config;` // 声明 SCSS 全局变量
      }
    }
  },
  build: {
    target: 'es2020' // 指定 ES 版本标准
  },
  optimizeDeps: { // 优化选项
    esbuildOptions: {
      target: 'es2020' // 指定 ES 版本标准
    },
  },
})
